﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DAL.Entity;
using DAL.Persistencia;

namespace NewTierra.Pages
{
    public partial class TarifasCopiar : System.Web.UI.Page
    {
        public static bool MsgDelete;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                PopulaDropEstacao(sender, e);
                PopulaDropPeriodo(sender, e);
            }
        }

        #region Popular Dados

        protected void PopulaDropEstacao(object sender, EventArgs e)
        {
            try
            {
                using (NewTierraEntities n = new NewTierraEntities())
                {
                    DropEstacao.DataSource = n.S_Mercado_Estacao.ToList();
                    DropEstacao.DataValueField = "S_mercado_estacao_id";
                    DropEstacao.DataTextField = "S_mercado_estacao_nome";
                    DropEstacao.DataBind();

                }
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        protected void PopulaDropPeriodo(object sender, EventArgs e)
        {
            try
            {
                PeriodosDAL p = new PeriodosDAL();

                DropPeriodos.DataSource = p.ListarTodos(Convert.ToInt32(Session["Sid"]));

                DropPeriodos.DataValueField = "S_merc_periodo_id";
                DropPeriodos.DataTextFormatString = ("{0:dd/MM/yyy}");
                DropPeriodos.DataTextField = "S_merc_periodo_from";
                DropPeriodos.DataBind();

                DropPeriodos.Items.Insert(0, new ListItem("Selecione", "0"));

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        #endregion

        #region CRUD Tarifas

        protected void SalvarTarifas(object sender, EventArgs e)
        {
            BuscaTarifas_Salva();
        }

        protected void BuscaTarifas_Salva()
        {
            try
            {
                TarifaDAL t = new TarifaDAL();
                MealDAL m = new MealDAL();
                SPoliticaCHDTarifasDAL sctd = new SPoliticaCHDTarifasDAL();

                if (chkPercent.Checked && txtPercent.Text.Equals(""))
                {
                    lblCopiarTarifas.Text = "Escolha um valor para porcentagem.";
                    return;
                }

                int IdPeriodo = SalvarPeriodo();

                if (IdPeriodo == 0)
                {
                    return;
                }

                foreach (S_Mercado_Tarifa p in t.ListarTodosLista(Convert.ToInt32(DropPeriodos.SelectedValue)))
                {
                    S_Mercado_Tarifa s = new S_Mercado_Tarifa();

                    if (p.S_merc_tarif_tarifa != null)
                    {

                        if (chkPercent.Checked)
                        {
                            double percent = Convert.ToDouble(p.S_merc_tarif_tarifa_total) * Convert.ToDouble(txtPercent.Text) / 100;
                            s.S_merc_tarif_tarifa_total = Convert.ToDecimal(percent) + Convert.ToDecimal(p.S_merc_tarif_tarifa_total);
                        }
                        else
                        {
                            s.S_merc_tarif_tarifa_total = Convert.ToDecimal(p.S_merc_tarif_tarifa_total);
                        }

                        s.S_merc_tarif_tarifa = Convert.ToDecimal(p.S_merc_tarif_tarifa);
                        //s.S_merc_tarif_tarifa_total = Convert.ToDecimal(p.S_merc_tarif_tarifa_total);
                        s.S_merc_tarif_porc_taxa = Convert.ToDecimal(p.S_merc_tarif_porc_taxa);
                        s.S_merca_tarif_porc_imposto = Convert.ToDecimal(p.S_merca_tarif_porc_imposto);
                        s.S_merca_tarif_porc_comissao = Convert.ToDecimal(p.S_merca_tarif_porc_comissao);
                        s.S_merc_tarif_ordem = p.S_merc_tarif_ordem;
                        s.S_merc_tarif_porApartamento = p.S_merc_tarif_porApartamento;
                        s.S_merc_tarif_porPessoa = p.S_merc_tarif_porPessoa;
                        
                    }
                    else
                    {
                        s.S_merc_tarif_status_id = Convert.ToInt32(p.S_merc_tarif_status_id);
                    }

                    s.Tipo_room_id = Convert.ToInt32(p.Tipo_room_id);
                    s.Tarif_categoria_id = Convert.ToInt32(p.Tarif_categoria_id);
                    s.S_mercado_tipo_tarifa_id = Convert.ToInt32(p.S_mercado_tipo_tarifa_id);
                    s.S_merc_periodo_id = IdPeriodo;
                    //s.S_politicaCHD_id = p.S_politicaCHD_id;

                    MercadoTarifaDAL mtd = new MercadoTarifaDAL();

                    mtd.Salvar(s);

                    foreach (S_PoliticaCHDTarifas sc in sctd.ListarTodosLista(p.S_merc_tarif_id))
                    {
                        S_PoliticaCHDTarifas spct = new S_PoliticaCHDTarifas();

                        spct.S_merc_tarif_id = s.S_merc_tarif_id;
                        spct.S_politicaCHD_id = sc.S_politicaCHD_id;

                        sctd.Salvar(spct);
                    }

                }

                foreach (S_Mercado_Meal mm in m.ListarTodosLista(Convert.ToInt32(DropPeriodos.SelectedValue)))
                {
                    S_Mercado_Meal s = new S_Mercado_Meal();

                    if (mm.S_merc_meal_tarifa_total != null)
                    {
                        if (chkPercent.Checked)
                        {
                            double percent = Convert.ToDouble(mm.S_merc_meal_tarifa_total) * Convert.ToDouble(txtPercent.Text) / 100;
                            s.S_merc_meal_tarifa_total = Convert.ToDecimal(percent) + Convert.ToDecimal(mm.S_merc_meal_tarifa_total);
                        }
                        else
                        {
                            s.S_merc_meal_tarifa_total = Convert.ToDecimal(mm.S_merc_meal_tarifa_total);
                        }
                    }
                    else
                    {
                        s.S_merc_tarif_status_id = mm.S_merc_tarif_status_id;
                    }

                    s.S_meal_id = mm.S_meal_id;
                    s.S_merc_periodo_id = IdPeriodo;
                    s.S_merc_meal_tarifa = mm.S_merc_meal_tarifa;
                    //s.S_merc_meal_tarifa_total = mm.S_merc_meal_tarifa_total;
                    s.S_merca_meal_porc_imposto = mm.S_merca_meal_porc_imposto;
                    s.S_merc_meal_porc_taxa = mm.S_merc_meal_porc_taxa;

                    m.Salvar(s);
                }

                MostrarMsg("Tarifas copiadas com sucesso.");
                //lblCopiarTarifas.Text = "Tarifas copiadas com sucesso.";

                from.Text = "";
                to.Text = "";
            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
            }
        }

        public int SalvarPeriodo()
        {
            PeriodosDAL p = new PeriodosDAL();
            S_Mercado_Periodo a = p.ObterPorIdMercado(Convert.ToInt32(DropPeriodos.SelectedValue));
            S_Mercado_Periodo mp = new S_Mercado_Periodo();
            DescritivoPacoteDAL dpd = new DescritivoPacoteDAL();

            try
            {
                if (p.VerificaExiste(Convert.ToDateTime(from.Text), Convert.ToDateTime(to.Text), Convert.ToInt32(Session["Sid"])))
                {
                    ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "call me", "alert('Já existia cadastro com essas datas(From, To) neste hotel.')", true);
                }

                mp.S_merc_periodo_from = Convert.ToDateTime(from.Text);
                mp.S_merc_periodo_to = Convert.ToDateTime(to.Text);
                mp.S_id = a.S_id;
                mp.S_mercado_estacao_id = Convert.ToInt32(DropEstacao.SelectedValue);
                mp.BaseTarifaria_id = a.BaseTarifaria_id;
                mp.Mercado_id = a.Mercado_id;
                mp.Moeda_id = a.Moeda_id;
                mp.Responsavel_id = a.Responsavel_id;
                mp.S_merc_periodo_fdsFrom = a.S_merc_periodo_fdsFrom;
                mp.S_merc_periodo_fdsTo = a.S_merc_periodo_fdsTo;
                mp.MinimoNoites_id = a.MinimoNoites_id;
                mp.S_merc_periodo_minimo = a.S_merc_periodo_minimo;
                mp.S_merc_periodo_mandatorio = a.S_merc_periodo_mandatorio;
                mp.Promocao_id = a.Promocao_id;
                mp.S_merc_remarks = a.S_merc_remarks;
                mp.Provisorio = chkProvisorio.Checked;
                mp.Pacote_nome = a.Pacote_nome;

                p.Salvar(mp);

                Descritivo_Pacote dp = dpd.ObterPorIdPeriodo(a.S_merc_periodo_id);

                if (dp != null)
                {
                    Descritivo_Pacote descp = new Descritivo_Pacote();

                    descp.Descritivo_descr0 = dp.Descritivo_descr0;
                    descp.Descritivo_descr1 = dp.Descritivo_descr1;
                    descp.Descritivo_descr2 = dp.Descritivo_descr2;
                    descp.Descritivo_descr3 = dp.Descritivo_descr3;
                    descp.Descritivo_descr4 = dp.Descritivo_descr4;
                    descp.Descritivo_descr5 = dp.Descritivo_descr5;
                    descp.Descritivo_descr6 = dp.Descritivo_descr6;
                    descp.Descritivo_descr7 = dp.Descritivo_descr7;
                    descp.Descritivo_descr8 = dp.Descritivo_descr8;
                    descp.Descritivo_descr9 = dp.Descritivo_descr9;
                    descp.S_merc_periodo_id = mp.S_merc_periodo_id;

                    dpd.Salvar(descp);
                }

                return Convert.ToInt32(mp.S_merc_periodo_id);

            }
            catch (Exception ex)
            {
                MostrarMsg(ex.Message);
                return 0;
            }


        }

        #endregion

        #region Regras

        protected void DropPeriodos_SelectedIndexChanged(object sender, EventArgs e)
        {
            try
            {

                if (!DropPeriodos.SelectedValue.Equals("0"))
                {
                    PeriodosDAL pd = new PeriodosDAL();

                    S_Mercado_Periodo p = pd.ObterPorIdPeriodo(Convert.ToInt32(DropPeriodos.SelectedValue));

                    lblDiaSemTXT.Visible = true;
                    lblDiaSem.Text = p.S_merc_periodo_fdsFrom + "-" + p.S_merc_periodo_fdsTo;
                }
            }
            catch (Exception ex)
            {
                lblCopiarTarifas.Text = ex.Message;
            }
        }

        #endregion

        protected void MostrarMsg(string Msg)
        {
            ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "call me", "showAutoCloseMessage('" + Msg + "')", true);
        }

        protected void chkPercent_CheckedChanged(object sender, EventArgs e)
        {
            if (chkPercent.Checked)
            {
                txtPercent.Visible = true;
            }
            else
            {
                txtPercent.Visible = false;
            }
        }
    }
}